home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / tclMotif-1.4 / tests / text.test < prev    next >
Text File  |  1995-06-29  |  7KB  |  293 lines

  1.  
  2. if {[string compare test [info procs test]] == 1} then \
  3.   {source defs}
  4.  
  5. # set VERBOSE 1
  6. # set INTERACTIVE 1
  7.  
  8. proc no-changeCB {doit} {
  9.     upvar 1 $doit d
  10.  
  11.     set d false
  12. }
  13.  
  14. proc allcaps {ptr length} {
  15.   upvar 1 $ptr p
  16.   upvar 1 $length l
  17.  
  18.   if {$l == 0} return
  19.   set upper [string toupper $p]
  20.   set p $upper
  21. }
  22.  
  23.  
  24. #############
  25. # starts here
  26. #############
  27.  
  28. xtAppInitialize -class Text
  29. . setValues -allowShellResize true
  30.  
  31. # XtText does not have a natural size, but doesn't like
  32. # zero width, so let a label set a >0 width
  33. xmRowColumn .textrc managed
  34. xmLabel .textrc.label managed
  35.  
  36. xmText .textrc.t1 managed \
  37.    -columns 40
  38. . realizeWidget
  39.  
  40. ##################################
  41. # Manipulating text by resources #
  42. ##################################
  43.  
  44. test text-1.1 {setting and getting text} {
  45.     .textrc.t1 setValues -value "The rain in Spain"
  46.     .textrc.t1 getValues -value v
  47.     set v
  48. } {The rain in Spain}
  49.  
  50. ################################
  51. # Manipulating text by actions #
  52. ################################
  53.  
  54. test text-2.1 {appending text by insert-string} {
  55.     .textrc.t1 callActionProc end-of-file()
  56.     .textrc.t1 callActionProc {insert-string(" falls mainly")}
  57.     .textrc.t1 getValues -value v
  58.     set v
  59. } {The rain in Spain falls mainly}
  60.  
  61. test text-2.2 {deleting text by delete-previous-character} {
  62.     .textrc.t1 callActionProc delete-previous-character()
  63.     .textrc.t1 callActionProc delete-previous-character()
  64.     .textrc.t1 getValues -value v
  65.     set v
  66. } {The rain in Spain falls main}
  67.  
  68. test test-2.3 {inserting text by self-insert} {
  69.     .textrc.t1 setValues -value ""
  70.     .textrc.t1 callActionProc self-insert() \
  71.     -type KeyPress \
  72.     -keysym T
  73.     .textrc.t1 callActionProc self-insert() \
  74.     -type KeyPress \
  75.     -keysym h
  76.     .textrc.t1 callActionProc self-insert() \
  77.     -type KeyPress \
  78.     -keysym space
  79.     .textrc.t1 callActionProc self-insert() \
  80.     -type KeyPress \
  81.     -keysym 9
  82.     .textrc.t1 getValues -value v
  83.     set v
  84. } {Th 9}
  85.  
  86. #############################
  87. # modification verification #
  88. #############################
  89.  
  90. ############
  91. # no changes
  92. ############
  93. test text-3.1 {turn off every change in modifyVerify callback} {
  94.     .textrc.t1 setValues -value "The rain in Spain"
  95.  
  96.     .textrc.t1 modifyVerifyCallback {no-changeCB %doit}
  97.  
  98.     .textrc.t1 callActionProc {insert-string(" falls mainly")}
  99.     .textrc.t1 getValues -value v
  100.     set v
  101. } {The rain in Spain}
  102.  
  103. ####################
  104. # capitalize changes
  105. ####################
  106. .textrc.t1 destroyWidget
  107. xmText .textrc.t2 managed \
  108.     -columns 40
  109.  
  110. test text-3.2 {change text in modifyVerify callback} {
  111.     .textrc.t2 setValues -value "The rain in Spain"
  112.     .textrc.t2 callActionProc end-of-file()
  113.  
  114.     .textrc.t2 modifyVerifyCallback {allcaps %ptr %length}
  115.  
  116.     .textrc.t2 callActionProc {insert-string(" FalLs mAInlY")}
  117.     .textrc.t2 getValues -value v
  118.     set v
  119. } {The rain in Spain FALLS MAINLY}
  120.  
  121. #####################################    
  122. # setting and getting text by methods
  123. #####################################
  124.  
  125. .textrc.t2 destroyWidget
  126. xmText .textrc.t3 managed \
  127.     -columns 40
  128.  
  129. test text-4.1 {set and get text} {
  130.     .textrc.t3 setString "hello world"
  131.     .textrc.t3 getString 
  132. } {hello world}
  133.  
  134. if {$XmVersion >= 1002} {
  135. test text-4.2 {get a substring} {
  136.     set found [.textrc.t3 getSubstring 2 3 value]
  137.     if {$found == "succeeded"} {
  138.     set result $value
  139.     } else {set result $found}
  140.     set result
  141. } {llo}    
  142. }
  143.  
  144. ####################################
  145. # getting and setting editable state
  146. ####################################
  147.  
  148. test text-5.1 {set and get editable state} {
  149.     .textrc.t3 setEditable false
  150.     .textrc.t3 getEditable
  151. } {false}
  152.  
  153. test text-5.2 {set and get editable state} {
  154.     .textrc.t3 setEditable true
  155.     .textrc.t3 getEditable
  156. } {true}
  157.  
  158. ########################################
  159. # getting and setting insertion position
  160. ########################################
  161.  
  162. test text-6.1 {getting and setting insertion position} {
  163.     .textrc.t3 setInsertionPosition 5
  164.     .textrc.t3 getInsertionPosition
  165. } {5}
  166.  
  167. test text-6.2 {getting last position} {
  168.     .textrc.t3 setString "hello porkpie hat"
  169.     .textrc.t3 getLastPosition
  170. } {17}
  171.  
  172. #################
  173. # finding strings
  174. #################
  175.  
  176. .textrc.t3 setString "hello world"
  177.  
  178. if {$XmVersion >= 1002} {
  179. test text-7.1 {search forward for string} {
  180.     .textrc.t3 findString 1 wor forward position
  181.     set position
  182. } {6}
  183.  
  184. test text-7.2 {search backward for string} {
  185.     .textrc.t3 findString 10 wor backward position
  186.     set position
  187. } {6}
  188.  
  189. test text-7.3 {search for non-existent string} {
  190.     .textrc.t3 findString 1 universe forward position
  191. } {false}
  192. }
  193.  
  194. ############################
  195. # manipulating parts of text
  196. ############################
  197.  
  198. test text-8.1 {insert text} {
  199.     .textrc.t3 setString "abcdefgh"
  200.     .textrc.t3 insert 3 PQRST
  201.     .textrc.t3 getString
  202. } {abcPQRSTdefgh}
  203.  
  204. test text-8.2 {replace text} {
  205.     .textrc.t3 replace 3 8 IJKL
  206.     .textrc.t3 getString
  207. } {abcIJKLdefgh}
  208.  
  209. #########################
  210. # scroll and top position
  211. #########################
  212.  
  213. test text-9.1 {scroll and top position} {
  214.     .textrc.t3 setValues -editMode multi_line_edit
  215.     .textrc.t3 setString "one\ntwo\nthree"
  216.     .textrc.t3 scroll 2
  217.     .textrc.t3 getTopCharacter
  218. } {8}
  219.  
  220. test text-9.2 {set top character} {
  221.     .textrc.t3 setTopCharacter 5
  222.     .textrc.t3 getTopCharacter
  223. } {4}
  224.  
  225. test text-9.3 {show position} {
  226.     .textrc.t3 setValues -autoShowCursorPosition true
  227.     .textrc.t3 showPosition 2
  228.     .textrc.t3 getInsertionPosition
  229. } {0}
  230.  
  231. ##################
  232. # multiple sources
  233. ##################
  234.  
  235. test text-10.1 {two sources} {
  236.     .textrc.t3 destroyWidget
  237.     xmRowColumn .textrc.rc managed
  238.     xmText .textrc.rc.text managed
  239.     xmText .textrc.rc.text2 managed
  240.     .textrc.rc.text setString abcdefgh
  241.     .textrc.rc.text2 setSource .textrc.rc.text 0 0
  242.     .textrc.rc.text2 getString
  243. } {abcdefgh}
  244.  
  245. .textrc.rc destroyWidget
  246.  
  247.  
  248. ###################
  249. # primary selection
  250. ###################
  251.  
  252. xmText .textrc.t4 managed
  253.  
  254. test text-11.1 {managing the primary selection} {
  255.     .textrc.t4 setString "hello world"
  256.     .textrc.t4 setSelection 2 7
  257.     .textrc.t4 getSelection
  258. } {llo w}
  259.  
  260. test text-11.2 {locating primary selection} {
  261.     .textrc.t4 getSelectionPosition left right
  262.     set result "$left $right"
  263.     set result
  264. } {2 7}
  265.  
  266. test text-11.3 {copy and paste primary selection} {
  267.     .textrc.t4 copy
  268.     .textrc.t4 setInsertionPosition 1
  269.     .textrc.t4 paste
  270.     .textrc.t4 getString
  271. } {hllo wello world}
  272.  
  273. test text-11.4 {cut and paste the primary selection} {
  274.     .textrc.t4 setString "hello world"
  275.     .textrc.t4 setSelection 2 7
  276.     .textrc.t4 cut
  277.     .textrc.t4 setInsertionPosition 0
  278.     .textrc.t4 paste
  279.     .textrc.t4 getString
  280. } {llo wheorld}
  281.  
  282.  
  283. #############
  284. # Finish up #
  285. #############
  286. if { ! $INTERACTIVE} {
  287.   .textrc.label destroyWidget
  288.   .textrc.t4 destroyWidget
  289.   .textrc destroyWidget
  290. } else {
  291.   . mainLoop
  292. }
  293.